﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class ThongKe_Thongketuybien : System.Web.UI.Page
{
    
    string tendonvi = null;
    _dbDataContext _db = new _dbDataContext();
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session.Remove("MaCSDTruyVanTuyChon");
            CatalogAccess.BindItemToDropDown(drldantoc, 1);
            CatalogAccess.BindItemToDropDown(drltongiao, 2);
            CatalogAccess.BindItemToDropDown(drlHonnhan, 3);
            CatalogAccess.BindItemToDropDown(drlKhuVuc, 1015);
            BindItemToTrinhDoVanHoa();
            CatalogAccess.BindItemToDropDown(drlNgoaingu, 4);
            CatalogAccess.BindItemToDropDown(drlTinhoc, 5);
            CatalogAccess.BindItemToDropDown(drlTrinhdochuyenmon, 1016);
            rdbnam.Checked = false;
            rdbnu.Checked = false;
            chk_tatca_gt.Checked = false;
            string madonvi = MemberShip_ASP.GetMaDonViFromUserName(this.Page.User.Identity.Name);
            List<tblCoSoDoan> val = _db.tblCoSoDoans.Where(r => r.MaDonVi.Trim() != "TDB").ToList();
            string daidien = madonvi.Substring(0, 3);
            //huyện đoàn,đoàn ngang cấp:cơ quan đoàn khối
            if (daidien == "CSD")
            {
                TreeView1.Nodes.Clear();
                tendonvi = val.Single(r => r.MaDonVi.Trim() == madonvi.Trim()).TenDonVi;
                List<tblCoSoDoan> list = val.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
                TreeNode root = new TreeNode(" <i class='icon-circle-arrow-right' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + tendonvi + "</span>", madonvi.Trim());
                foreach (tblCoSoDoan item in list)
                {
                    TreeNode child = new TreeNode(" <i class=' icon-leaf' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item.TenDonVi.Trim() + "</span>", item.MaDonVi.Trim());
                    List<tblCoSoDoan> list1 = val.Where(r => r.TrucThuoc.Trim() == item.MaDonVi.Trim()).ToList();
                    root.ChildNodes.Add(child);
                    foreach (tblCoSoDoan item1 in list1)
                    {
                        TreeNode child1 = new TreeNode(" <i class='icon-circle-arrow-right' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item1.TenDonVi.Trim() + "</span>", item1.MaDonVi.Trim());
                        child.ChildNodes.Add(child1);
                    }
                }
                TreeView1.Nodes.Add(root);
            }
            else
            {
                if (daidien == "DCS" || daidien == "CDC")
                {
                    //doan quan huyen
                    TreeView1.Nodes.Clear();
                    tendonvi = val.Single(r => r.MaDonVi.Trim() == madonvi.Trim()).MaDonVi;
                    List<tblCoSoDoan> list = val.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
                    TreeNode root = new TreeNode(" <i class='icon-circle-arrow-right' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + tendonvi + "</span>", madonvi.Trim());
                    foreach (tblCoSoDoan item in list)
                    {
                        TreeNode child = new TreeNode(" <i class='icon-circle-arrow-right' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item.TenDonVi.Trim() + "</span>", item.MaDonVi.Trim());
                        List<tblCoSoDoan> list1 = val.Where(r => r.TrucThuoc.Trim() == item.MaDonVi.Trim()).ToList();
                        root.ChildNodes.Add(child);
                    }
                    TreeView1.Nodes.Add(root);
                }
                else
                {
                    if (daidien == "CDD")
                    {
                        //chi đoàn
                        TreeView1.Nodes.Clear();
                        tendonvi = val.Single(r => r.MaDonVi.Trim() == madonvi.Trim()).TenDonVi.Trim().ToString();
                        List<tblCoSoDoan> list = val.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
                        foreach (tblCoSoDoan item in list)
                        {
                            TreeNode root = new TreeNode(" <i class='icon-circle-arrow-right' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + tendonvi + "</span>", madonvi.Trim());
                            TreeView1.Nodes.Add(root);
                        }

                    }
                    else if (daidien == "TDB")
                    {
                        TreeView1.Nodes.Clear();
                        tendonvi = "Tỉnh Đoàn Bình Dương";
                        List<tblCoSoDoan> list = val.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
                        TreeNode root = new TreeNode(" <i class='icon-home' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + tendonvi + "</span>", madonvi.Trim());
                        foreach (tblCoSoDoan item in list)
                        {
                            TreeNode child = new TreeNode(" <i class=' icon-leaf' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item.TenDonVi.Trim() + "</span>", item.MaDonVi.Trim());
                            List<tblCoSoDoan> list1 = val.Where(r => r.TrucThuoc.Trim() == item.MaDonVi.Trim()).ToList();
                            root.ChildNodes.Add(child);
                            foreach (tblCoSoDoan item1 in list1)
                            {
                                TreeNode child1 = new TreeNode(" <i class='icon-pencil' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item1.TenDonVi.Trim() + "</span>", item1.MaDonVi.Trim());
                                child.ChildNodes.Add(child1);
                                List<tblCoSoDoan> list2 = val.Where(r => r.TrucThuoc.Trim() == item1.MaDonVi.Trim()).ToList();
                                foreach (tblCoSoDoan item2 in list2)
                                {
                                    TreeNode child2 = new TreeNode(" <i class='icon-pencil' style=color:Green;font-size:14px;'></i><span style=';font-size:14px;'> " + item2.TenDonVi.Trim() + "</span>", item2.MaDonVi.Trim());
                                    child1.ChildNodes.Add(child2);
                                }
                            }
                        }
                        TreeView1.Nodes.Add(root);
                    }
                }
            }
        
        }
    }
    //event lay ma co so doan tu treeview
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        txttieudebanin.Text = "Nhập tiêu đề ";
        string madonvi_treeview = TreeView1.SelectedNode.Value.Trim();
        Session["MaCSDTruyVanTuyChon"] = madonvi_treeview;
    }
    //ham lay ma don vi khi chon vao treeview
    public List<tblCoSoDoan> _Get_Id_CSD(string madonvi)
    {
        List<tblCoSoDoan> listcosodoan = _db.tblCoSoDoans.Where(r => r.MaDonVi.Trim() != "TDB").ToList();
        string daidien = "";
        if (madonvi == "")
        {
            daidien = "TDB";
        }
        else
        {
            daidien = madonvi.Substring(0, 3);
        }

        List<tblCoSoDoan> _list_csd = new List<tblCoSoDoan>();
        //huyện đoàn,khối các cơ quan...:
        if (daidien == "CSD")
        {
            _list_csd.Add(listcosodoan.Single(r => r.MaDonVi.Trim() == madonvi));
            //cấp 1: huyện đoàn
            List<tblCoSoDoan> list = listcosodoan.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
            foreach (tblCoSoDoan item in list)
            {
                _list_csd.Add(item);
                //cấp 2:đoàn cs
                List<tblCoSoDoan> list1 = listcosodoan.Where(r => r.TrucThuoc.Trim() == item.MaDonVi.Trim()).ToList();
                foreach (tblCoSoDoan item1 in list1)
                {
                    _list_csd.Add(item1);
                    //cấp 3: chi đoàn cs
                    List<tblCoSoDoan> list2 = listcosodoan.Where(r => r.TrucThuoc.Trim() == item1.MaDonVi.Trim()).ToList();
                    foreach (tblCoSoDoan item2 in list2)
                    {
                        _list_csd.Add(item2);
                    }
                }
            }
        }
        //đoàn cơ sở->chi đoàn cơ sở
        else if (daidien == "DCS")
        {
            _list_csd.Add(listcosodoan.Single(r => r.MaDonVi.Trim() == madonvi));
            //cấp 1: huyện đoàn
            List<tblCoSoDoan> list = listcosodoan.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
            foreach (tblCoSoDoan item in list)
            {
                _list_csd.Add(item);
                //cấp 2:đoàn cs
                List<tblCoSoDoan> list1 = listcosodoan.Where(r => r.TrucThuoc.Trim() == item.MaDonVi.Trim()).ToList();
                foreach (tblCoSoDoan item1 in list1)
                {
                    _list_csd.Add(item1);
                }
            }
        }
        //chi đoàn cơ sở :ko có cấp dưới
        else if (daidien == "CDC" || daidien == "CDD")
        {
            _list_csd.Add(listcosodoan.Single(r => r.MaDonVi.Trim() == madonvi));
            //cấp 1: huyện đoàn
            List<tblCoSoDoan> list = listcosodoan.Where(r => r.TrucThuoc.Trim() == madonvi).ToList();
            foreach (tblCoSoDoan item in list)
            {
                _list_csd.Add(item);

            }
        }
        else
        {
            _list_csd = _db.tblCoSoDoans.ToList();
        }
        return _list_csd;



    }
    //Add item to drlTrinhDo
    private void BindItemToTrinhDoVanHoa()
    {
        drlTrinhdovanhoa.Items.Clear();
        ListItem item = new ListItem("---Chọn trình độ---", "-1");
        drlTrinhdovanhoa.Items.Add(item);
        for (int i = 1; i <= 12; i++)
        {
            item = new ListItem(i.ToString(), i.ToString());
            drlTrinhdovanhoa.Items.Add(item);
           
        }
        item = new ListItem("Chưa đi học", "13");
        drlTrinhdovanhoa.Items.Add(item);
    }
    
    //truy vấn dữ liệu
    protected void btnthongke_tyubien_Click(object sender, EventArgs e)
    {
        label_table.Text = "";
        string SQL = "";
        if (Session["MaCSDTruyVanTuyChon"]==null)
        {
            lbl_status.Text = "<i class='icon-bell-alt red'>Chưa có đơn vị nào được chọn</i>";
        }
        else
        {
            Dictionary<string, string> dic_sql = new Dictionary<string, string>();
            //=================================//
            if (txttungay.Text != "")
            {
                dic_sql["NgayVaoDoan"] = CatalogAccess.ConvertToString(txttungay.Text) + "@" + CatalogAccess.ConvertToString(txtdenngay.Text);
            }
            if (txtdenngay.Text != "")
            {
                dic_sql["NgayVaoDoan"] = CatalogAccess.ConvertToString(txttungay.Text) + "@" + CatalogAccess.ConvertToString(txtdenngay.Text);
            }
            if (drltongiao.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("TonGiao", drltongiao.SelectedValue.ToString().Trim());
            }
            if (drldantoc.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("DanToc", drldantoc.SelectedValue.ToString().Trim());
            }
            if (chkdangviensinhhoatdoan.Checked == true)
            {
                dic_sql.Add("DangVien", "True");
            }
            if (txttuoitu.Text != "")
            {
                dic_sql["NgaySinh"] = string.Format("{0:yyyy/MM/dd}", tuoi_to_datetime(Convert.ToInt32(txtdentuoi.Text))) + "@" + string.Format("{0:yyyy/MM/dd}", tuoi_to_datetime(Convert.ToInt32(txttuoitu.Text)));
            }
            if (txtdentuoi.Text != "")
            {
                dic_sql["NgaySinh"] = string.Format("{0:yyyy/MM/dd}", tuoi_to_datetime(Convert.ToInt32(txtdentuoi.Text))) + "@" + string.Format("{0:yyyy/MM/dd}", tuoi_to_datetime(Convert.ToInt32(txttuoitu.Text)));
            }
            if (drlNgoaingu.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("NgoaiNgu", drlNgoaingu.SelectedValue.ToString().Trim());
            }
            if (drlTinhoc.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("TinHoc", drlTinhoc.SelectedValue.ToString().Trim());
            }
            if (drlTrinhdovanhoa.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("TrinhDoVanHoa", drlTrinhdovanhoa.SelectedValue.ToString().Trim());
            }
            if (drlTrinhdochuyenmon.SelectedValue.ToString() != "-1")
            {
                dic_sql.Add("TrinhDoChuyenMonID", drlTrinhdochuyenmon.SelectedValue.ToString().Trim());
            }
            if (chkSinhhoatnoicutru.Checked == true)
            {
                dic_sql.Add("DoanVienSinhHoatNoiCuTru", "True");
            }
            if (drlKhuVuc.SelectedIndex != 0)
            {
                dic_sql.Add("DiaBanDanCuID", drlKhuVuc.SelectedValue.ToString().Trim());
            }
            if (drlHonnhan.SelectedIndex != 0)
            {
                dic_sql.Add("HonNhan", drlHonnhan.SelectedValue.ToString().Trim());
            }
            if (rdbnu.Checked == true)
            {
                dic_sql.Add("Phai", "False");
            }
            if (rdbnam.Checked == true)
            {
                dic_sql.Add("Phai", "True");
            }
            if (chk_tatca_gt.Checked == true)
            {
                dic_sql.Remove("Phai");
                rdbnam.Checked = false;
                rdbnu.Checked = false;
            }
            //===============================//
            MemberShip_ASP.Query_tuybien list_tb;
            List<tblCoSoDoan> csd = _Get_Id_CSD(Session["MaCSDTruyVanTuyChon"].ToString());
            lbl_status.Text = "";
            panel_indanhsach.Visible = true;
            List<MemberShip_ASP.Query_tuybien> list_tuybien = new List<MemberShip_ASP.Query_tuybien>();
            foreach(tblCoSoDoan csd_ in csd)
            {
                SQL = Return_SQL(dic_sql,csd_.MaDonVi.Trim());
                if (SQL != null)
                {

                    
                    //lblsql_message.Text = SQL;
                    DataTable dt = CatalogAccess.Truyvan(SQL);
                    foreach (DataRow dr in dt.Rows)
                    {
                        list_tb = new MemberShip_ASP.Query_tuybien();
                        list_tb.MaDoanVien = dr["MaDonVien"].ToString();
                        list_tb.TenDoanVien = dr["HoTen"].ToString();
                        list_tb.GioiTinh = ((bool)dr["Phai"] == true ? "Nam" : "Nữ");
                        list_tb.NgaySinh = string.Format("{0:dd/MM/yyyy}", dr["NgaySinh"]);
                        list_tb.NgayVaoDoan = string.Format("{0:dd/MM/yyyy}", dr["NgayVaoDoan"]);
                        list_tb.NguyenQuan = dr["NguyenQuan"].ToString();
                        list_tuybien.Add(list_tb);
                    }

                }  
                
            }

            if (list_tuybien.Count > 0)
            {
                string Today_date = string.Format("{0:dd/MM/yyyy}", DateTime.Now);
                string str = "<td style='text-align: right;' colspan='7'>"
                                                               + "<em>Ngày lập báo cáo:" + Today_date + "</em>"
                                                               + "&nbsp;"

                                                                  + " <em>"
                                                                      + " <br />"
                                                                      + " Đơn vị thống kê trực thuộc:Tỉnh đoàn bình dương </em>"
                                                               + "&nbsp;"

                                                           + "</td>"
                                                       + "</tr>"

                                                       + "<tr>"
                                                           + "<td>STT</td>"
                                                           + "<td>Mã đoàn viên</td>"
                                                           + "<td>Họ Tên</td>"
                                                           + "<td>Ngày sinh</td>"
                                                           + "<td>Giới tính</td>"
                                                           + "<td>Ngày vào đoàn</td>"
                                                           + "<td>Nguyên Quán</td>"
                                                       + "</tr>";


                int dem = 0;
                foreach (var dtdv in list_tuybien)
                {
                    str += "<tr>"
                     + "<td>" + dem++ + "</td>"
                     + "<td>" + dtdv.MaDoanVien + "</td>"
                     + "<td style='text-align: justify;'>" + dtdv.TenDoanVien + "</td>   "
                     + "<td>" + dtdv.NgaySinh + "</td>"
                     + "<td>" + dtdv.GioiTinh + "</td> "
                     + "<td>" + dtdv.NgayVaoDoan + "</td>     "
                     + "<td>" + dtdv.NguyenQuan + "</td>    "
                      + "</tr>";
                }
                label_table.Text = str;
            }
            else
            {
                label_table.Text = "";
                lbl_status.Text = "<i class='icon-bell-alt red'>Chưa có dữ liệu hoặc chưa có mục nào được chọn</i>";
               
            }
        }
    }
    //trả về câu lẹnh SQL
    public string Return_SQL(Dictionary<string, string> dic,string matructhuoc)
    {
        string SQL = "Select * from tblDoanVien where (";
        if (dic.Count() > 0)
        {
            foreach(var pair in dic)
            {
                if(rdb_TUONGDOI.Checked==true)
                {
                    if (dic.Keys.ToList().IndexOf(pair.Key)==0)
                    {
                        if (pair.Key == "NgaySinh" || pair.Key == "NgayVaoDoan")
                        {
                            string[] str_array = pair.Value.Split('@');
                            string str1 = str_array[0];
                            string str2 = str_array[1];
                            SQL += "(" + pair.Key + ">='" + str1 + "' AND " + pair.Key + "<='" + str2 + "')";
                            
                        }
                        else
                        {
                            SQL += "" + pair.Key + "='" + pair.Value + "'";
                        }
                        
                    }
                    else
                    {
                        if (pair.Key == "NgaySinh" || pair.Key == "NgayVaoDoan")
                        {
                            string[] str_array = pair.Value.Split('@');
                            string str1 = str_array[0];
                            string str2 = str_array[1];
                                SQL += " OR ( " + pair.Key + ">='" + str1 + "' AND " + pair.Key + "<='" + str2 + "') ";
                            
                            
                        }
                        else
                        {
                            SQL += " OR " + pair.Key + "='" + pair.Value + "'";
                        }
                    }
                }
                else
                {
                    if (dic.Keys.ToList().IndexOf(pair.Key) == 0)
                    {
                        if (pair.Key == "NgaySinh"|| pair.Key == "NgayVaoDoan")
                        {
                            string[] str_array = pair.Value.Split('@');
                            string str1 = str_array[0];
                            string str2 = str_array[1];
                            SQL += " ( " + pair.Key + ">='" + str1 + "' AND " + pair.Key + "<='" + str2 + "') ";
                        }
                        else
                        {
                            SQL += " " + pair.Key + "='" + pair.Value + "'";
                        }
                    }
                    else
                    {
                        if (pair.Key == "NgaySinh" || pair.Key=="NgayVaoDoan")
                        {
                            string[] str_array = pair.Value.Split('@');
                            string str1 = str_array[0];
                            string str2 = str_array[1];
                            SQL += " AND  ( " + pair.Key + ">='" + str1 + "' AND " + pair.Key + "<='" + str2 + "') ";
                        }
                        else
                        {
                            SQL += " AND " + pair.Key + "='" + pair.Value + "'";
                        }
                    }
                }

                
            }
            SQL += ") AND TrucThuoc='" + matructhuoc + "'";
            
        }
        else
        {
            SQL = null;
        }
        return SQL;
    }
    //vào đoàn từ ngày
    
    //hàm đổi tuổi ra tháng năm
    public DateTime tuoi_to_datetime(int tuoi)
    {
        
        DateTime dt = DateTime.Now.AddYears(-tuoi);
        string st = string.Format("{0:dd/MM/yyyy}", dt);
        return CatalogAccess.ConvertToDate(st);

    }
    protected void btn_close_view_Click(object sender, EventArgs e)
    {
        panel_indanhsach.Visible = false;
    }
 
    protected void btnthongkemoi_Click(object sender, EventArgs e)
    {
        drldantoc.SelectedIndex = -1;
        drlHonnhan.SelectedIndex = -1;
        drldantoc.SelectedIndex = -1;
        drlKhuVuc.SelectedIndex = -1;
        drlTinhoc.SelectedIndex = -1;
        drlNgoaingu.SelectedIndex = -1;
        drltongiao.SelectedIndex = -1;
        drlTrinhdovanhoa.SelectedIndex = -1;
        drlTrinhdochuyenmon.SelectedIndex = -1;
        chk_tatca_gt.Checked = false;
        rdbnam.Checked = false;
        rdbnu.Checked = false;
        chkdangviensinhhoatdoan.Checked = false;
        chkSinhhoatnoicutru.Checked = false;
        txtdenngay.Text = "";
        txtdentuoi.Text = "";
        txttungay.Text = "";
        txttuoitu.Text = "";
        //lblsql_message.Text = "";
        txttieudebanin.Text = "Nhập tiêu đề cho danh sách";
    }
}